package com.panopset.compat;

import java.util.ArrayList;
import java.util.List;

/**
 * Droid compatible logger.
 *
 * @author Karl Dinwiddie
 *
 */
public final class Log {

    /**
     * Log listeners.
     */
    private final List<LogListener> listeners = new ArrayList<LogListener>();

    /**
     *
     * @param logListener LogListener to add.
     */
    public void addListener(final LogListener logListener) {
        listeners.add(logListener);
    }

    /**
     * Display a message to the user.
     *
     * @param msg
     *            Message to display.
     */
    public void dspmsg(final String msg) {
        if (listeners.isEmpty()) {
            System.out.println(msg);
            return;
        }
        for (LogListener ll : listeners) {
            ll.append(msg);
            ll.append(Strings.getEol());
        }
    }

    /**
     *
     * @param msg
     *            Message to log.
     */
    public void log(final String msg) {
        dspmsg(msg);
    }

    /**
     * Log a stack trace.
     *
     * @param t
     *            Throwable to log.
     */
    public void log(final Throwable t) {
        for (LogListener ll : listeners) {
            ll.append(new TraceDump(t).toString());
        }
        t.printStackTrace();
    }
}
